// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})

const db = cloud.database()
const _ = db.command
const ordersCollection = db.collection('orders')

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  
  try {
    // 获取用户ID，优先使用openid，如果没有则使用guestId
    const userId = wxContext.OPENID || event.userId
    
    if (!userId) {
      return {
        success: false,
        errMsg: '用户ID不存在'
      }
    }
    
    // 检查订单数据
    if (!event.items || event.items.length === 0) {
      return {
        success: false,
        errMsg: '订单商品不能为空'
      }
    }
    
    // 构建订单数据
    const orderData = {
      userId,
      items: event.items,
      totalAmount: event.totalAmount,
      deliveryFee: event.deliveryFee,
      totalPayable: event.totalPayable,
      remark: event.remark || '',
      status: 'pending', // 订单状态：pending-待处理, processing-处理中, completed-已完成, cancelled-已取消
      createTime: db.serverDate(),
      updateTime: db.serverDate()
    }
    
    // 添加订单到数据库
    const result = await ordersCollection.add({
      data: orderData
    })
    
    // 如果订单创建成功，并且用户使用的是openid（已登录），则清空用户的购物车
    if (result._id && wxContext.OPENID) {
      try {
        await db.collection('carts').where({
          userId: wxContext.OPENID
        }).update({
          data: {
            items: []
          }
        })
      } catch (cartErr) {
        console.error('清空购物车失败:', cartErr)
        // 这里不影响订单创建的结果，所以不返回错误
      }
    }
    
    // 查询创建的订单并返回
    const order = await ordersCollection.doc(result._id).get()
    
    return {
      success: true,
      data: order.data
    }
  } catch (err) {
    console.error('创建订单失败:', err)
    return {
      success: false,
      errMsg: '创建订单失败',
      error: err
    }
  }
}